8.17 读取单工作簿下的多工作表
Excel工作簿文件,是比较主流的一种数据存储方式,要读到excel工作簿下的所有工作表数据, 可以使用excel自带的VBA功能完成,但代码较为复杂,不过使用pandas来读取就方便很多了。
import pandas as pd
wb=pd.ExcelFile(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx" )
l=[]
for ws in wb.sheet_names:
df1=wb.parse(ws) #写入工作表名
print (df1)
df1[ "部门" ]=ws #给每个df添加部门的字段
l.append(df1) #append增加的是一个数组
print (l,"_____" )
df=pd.concat(objs=l) #数据转换成DataFrame
print (df)
返回:
姓名 | 工资 | |
---|---|---|
0 | 张三 | 111 |
1 | 李四 | 222 |
2 | 王麻子 | 333 |
[ | 姓名 | 工资 | 部门 | |
---|---|---|---|---|
0 | 张三 | 111 | 采购部 | |
1 | 李四 | 222 | 采购部 | |
2 | 王麻子 | 333 | 采购部] | _____ |
姓名 | 工资 | |
---|---|---|
0 | 小韦 | 888 |
1 | 小李 | 777 |
2 | 小余 | 666 |
[ | 姓名 | 工资 | 部门 | |
---|---|---|---|---|
0 | 张三 | 111 | 采购部 | |
1 | 李四 | 222 | 采购部 | |
2 | 王麻子 | 333 | 采购部, |
姓名 | 工资 | 部门 | ||
---|---|---|---|---|
0 | 小韦 | 888 | 财务部 | |
1 | 小李 | 777 | 财务部 | |
2 | 小余 | 666 | 财务部] | _____ |
姓名 | 工资 | |
---|---|---|
0 | 小许 | 333 |
1 | 小郭 | 444 |
2 | 小张 | 555 |
[ | 姓名 | 工资 | 部门 | |
---|---|---|---|---|
0 | 张三 | 111 | 采购部 | |
1 | 李四 | 222 | 采购部 | |
2 | 王麻子 | 333 | 采购部, |
姓名 | 工资 | 部门 | ||
---|---|---|---|---|
0 | 小韦 | 888 | 财务部 | |
1 | 小李 | 777 | 财务部 | |
2 | 小余 | 666 | 财务部, |
姓名 | 工资 | 部门 | ||
---|---|---|---|---|
0 | 小许 | 333 | 生产部 | |
1 | 小郭 | 444 | 生产部 | |
2 | 小张 | 555 | 生产部] | _____ |
姓名 | 工资 | 部门 | |
---|---|---|---|
0 | 张三 | 111 | 采购部 |
1 | 李四 | 222 | 采购部 |
2 | 王麻子 | 333 | 采购部 |
0 | 小韦 | 888 | 财务部 |
1 | 小李 | 777 | 财务部 |
2 | 小余 | 666 | 财务部 |
0 | 小许 | 333 | 生产部 |
1 | 小郭 | 444 | 生产部 |
2 | 小张 | 555 | 生产部 |
import pandas as pd
wb=pd.ExcelFile(r "D:\Pyobject2023\object\测试\素材\1.8.07 表格纵向拼接(初级).xlsx" )
l=[]
for ws in wb.sheet_names:
df1=wb.parse(ws) #写入工作表名
df1[ "部门" ]=ws #给每个df添加部门的字段
l.append(df1) #append增加的是一个数组
df=pd.concat(objs=l).groupby( "部门").agg({ "姓名" : lambda s:s.str.cat(sep= "、" )}).reset_index()
print (df)
返回:
部门 | 姓名 | |
---|---|---|
0 | 生产部 | 小许、小郭、小张 |
1 | 财务部 | 小韦、小李、小余 |
2 | 采购部 | 张三、李四、王麻子 |